package com.cloud.common.db.annotation;

import com.cloud.common.db.config.MybatisPlusAutoConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Import;
import org.springframework.scheduling.annotation.EnableAsync;

import java.lang.annotation.*;

/**
 * 自定义db注解 启用mapper扫描并支持异步
 * @author yan
 * @Retention RetentionPolicy
 * SOURCE：注解仅存在于源码中，在class字节码文件中不包含
 * CLASS：默认的保留策略，注解会在class字节码文件中存在，但运行时无法获得
 * RUNTIME：注解会在class字节码文件中存在，在运行时可以通过反射获取到
 * @Target： 作用于ElementType
 * TYPE：接口、类、枚举
 * FIELD：字段、枚举的常量
 * METHOD：方法
 * PARAMETER：方法参数
 * CONSTRUCTOR：构造函数
 * LOCAL_VARIABLE：局部变量
 * ANNOTATION_TYPE：注解
 * PACKAGE：包
 * @Document：说明该注解将被包含在javadoc中
 * @Inherited：说明子类可以继承父类中的该注解
 * @EnableAsync 开启线程异步支持
 * @MapperScan 指定要扫描的Mapper类的包的路径
 * @Import 自动加载类
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@MapperScan({"com.cloud.**.project.mapper"})
@EnableAsync
@Import({MybatisPlusAutoConfiguration.class})
public @interface EnableDBConfig {

}